約 6,106,384 件
https://w.atwiki.jp/picolit/pages/10.html
Java Java講座 たけおばの門 Tomcat yok's 技術メモ 浅煎り珈琲Javaアプリケーション入門 TECHSCORE -Java- Java Tips and Linux Java プログラミング入門 JavaでHello World Hibernate Hibernate メモ Hibernate-TECHSCORE- ファイヤープロジェクト
https://w.atwiki.jp/chapati4it/pages/105.html
MP3プレイヤーサンプル(JLayer,BasicPlayer,Java ID3 Tag Library)一通りの機能実装版 サンプルダウンロード サンプルソース単品 BasicPlayerSample2.java サンプルソース&必要なjarファイル BasicPlayerSample2.zip まるっと固めたjarファイル BasicPlayerSample2_jar.zip Windows用のexe入り BasicPlayerSample2_exe.zip 新しいサンプル サンプルソース単品 BasicPlayerSample3.java サンプルソース&必要なjarファイル BasicPlayerSample3.zip まるっと固めたjarファイル BasicPlayerSample3_jar.zip Windows用のexe入り BasicPlayerSample3_exe.zip 説明 Java/swing/BasicPlayer/Java ID3 Tag Library/JLayer BasicPlayerを使ったmp3プレイヤーサンプル第二弾 再生/停止/一時停止/プレイリスト/ループ再生/シャッフル再生/ボリューム調整/シーク/次の曲/前の曲/ID3タグv1v2読み込み ギリギリ最低限の機能をだいたい載せた気分のmp3プレイヤーサンプルです。BasicPlayerのお陰で結構簡単に作れました。 Java ID3 Tag Libraryは文字化け対応を埋め込んだ改造版です。 プレイリストは起動中に作るのみで保存も、読み込みも出来ません。そのうち実装したい… サンプルソース(長すぎるけど import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Polygon; import java.awt.Rectangle; import java.awt.RenderingHints; import java.awt.datatransfer.DataFlavor; import java.awt.dnd.DnDConstants; import java.awt.dnd.DropTarget; import java.awt.dnd.DropTargetAdapter; import java.awt.dnd.DropTargetDropEvent; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JScrollPane; import javax.swing.JSeparator; import javax.swing.JSlider; import javax.swing.JTable; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.plaf.metal.MetalSliderUI; import javax.swing.table.DefaultTableModel; import javazoom.jlgui.basicplayer.BasicController; import javazoom.jlgui.basicplayer.BasicPlayer; import javazoom.jlgui.basicplayer.BasicPlayerEvent; import javazoom.jlgui.basicplayer.BasicPlayerException; import javazoom.jlgui.basicplayer.BasicPlayerListener; import org.farng.mp3.MP3File; import org.farng.mp3.TagException; import org.farng.mp3.id3.AbstractID3v2; import org.farng.mp3.id3.ID3v1; // Java/swing/BasicPlayer/Java ID3 Tag Library/JLayer // BasicPlayerを使ったmp3プレイヤーサンプル第二弾 // 再生/停止/一時停止/プレイリスト/ループ再生/シャッフル再生/ボリューム調整/シーク/次の曲/前の曲/ID3タグv1v2読み込み // ギリギリ最低限の機能をだいたい載せた気分のmp3プレイヤーサンプルです。BasicPlayerのお陰で結構簡単に作れました。 // Java ID3 Tag Libraryは文字化け対応を埋め込んだ改造版です。 // プレイリストは起動中に作るのみで保存も、読み込みも出来ません。そのうち実装したい… public class BasicPlayerSample3 extends JFrame { // ベーシックプレイヤー BasicPlayer player; // Swing用変数、定数 // ボタン用テキスト 停止 final static String STOP = "Stop"; // ボタン用テキスト 再生 final static String PLAY = "Play"; // ボタン用テキスト 一時停止 final static String PAUSE = "Pause"; // タイトル final static String TITLE = "BasicPlayerでmp3再生"; final static String FILE_NAME = "ファイル名:"; // プレイリスト再生方法 String PL_ONE = "1曲のみ"; String PL_LIST = "プレイリスト順"; String PL_SHUFFLE = "シャッフル"; // 再生中のインデックス int playIndex; // プレイリストのモデル DefaultTableModel m; // 再生ボタン JButton bPlay; // 曲名ラベル JLabel label; // 演奏位置スライダー JSlider posSlider; // ボリュームスライダー JSlider volSlider; // 演奏位置スライダ用のリスナー ChangeListener posSliderCl; // ボリュームスライダ用のリスナー ChangeListener volSliderCl; // ループチェックボックス JCheckBox roopCheck; // プレイリストJTable JTable playList; // プレイリストの再生方法コンボボックス JComboBox plCombo; // シャッフル用のインデックスリスト ArrayList Integer shIndexs; // BasicPlayerからのプロパティを保存する変数 private Map audioInfo = null; // メイン関数 public static void main(String[] args) { new BasicPlayerSample3(); } // コンストラクタ public BasicPlayerSample3() { setTitle(TITLE); setDefaultCloseOperation(EXIT_ON_CLOSE); setBounds(200, 100, 300, 420); setLayout(new FlowLayout()); // ドロップターゲット設定 new DropTarget(this, DnDConstants.ACTION_COPY, new MyDropTargetListener()); // ラベル設置 label = new JLabel(" mp3ファイルをドロップしてください。"); label.setPreferredSize(new Dimension(getWidth() - 10, 20)); add(label); add(getHr(2000, 0)); // 再生、停止ボタン設置 bPlay = new JButton(PLAY); bPlay.addActionListener(new bPlayAction()); JButton bStop = new JButton(STOP); bStop.addActionListener(new bStopAction()); JButton bNext = new JButton(" "); bNext.addActionListener(new bNextAction()); JButton bPrev = new JButton(" "); bPrev.addActionListener(new bPrevAction()); add(bPrev); add(bPlay); add(bStop); add(bNext); // 再生位置スライダー設置 add(getHr(2000, 0)); add(new JLabel("再生位置")); posSlider = new JSlider(0, 100, 0); posSliderCl = getPosChangeListener(); posSlider.addChangeListener(posSliderCl); add(posSlider); // ボリュームスライダー設置 add(getHr(2000, 0)); add(new JLabel("ボリューム")); volSlider = new JSlider(0, 100, 50); volSliderCl = getVolChangeListener(); volSlider.addChangeListener(volSliderCl); volSlider.setUI(new TriSliderUI()); Dimension d = volSlider.getPreferredSize(); d.width = 100; volSlider.setPreferredSize(d); add(volSlider); add(getHr(2000, 0)); // プレイリスト再生方法 plCombo = new JComboBox(new String[] { PL_ONE, PL_LIST, PL_SHUFFLE }); plCombo.setSelectedIndex(1); setPlComboListener(); add(plCombo); // ループ再生チェック roopCheck = new JCheckBox("ループ再生"); add(roopCheck); // プレイリスト add(getHr(2000, 0)); m = new DefaultTableModel(new String[] { "タイトル", "アーティスト" }, 0); playList = new JTable(m); playList.setDefaultEditor(Object.class, null); // セルの編集禁止 setPlayListListener(); JScrollPane sc = new JScrollPane(playList); sc.setPreferredSize(new Dimension(280, 200)); add(sc); // BasicPlayerのインスタンス作成 player = new BasicPlayer(); addBasicPlayerListener(); setVisible(true); } // プレイリストの再生方法コンボボックスのリスナーを設定 String beforeItem; private void setPlComboListener() { plCombo.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { System.out.println(e.getStateChange()); if (e.getStateChange() == ItemEvent.SELECTED) { if (PL_SHUFFLE.equals(e.getItem())) { // シャッフルの場合 shIndexs = new ArrayList Integer (); for (int i = 0; i files.size(); i++) { shIndexs.add(i); } Collections.shuffle(shIndexs); play(0); } else if (PL_SHUFFLE.equals(beforeItem)) { // シャッフルから他のアイテムになった場合 playIndex = shIndexs.get(playIndex); } } else { beforeItem = e.getItem().toString(); } } }); } // プレイリストにリスナーを設定します private void setPlayListListener() { playList.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { // リストダブルクリックで該当曲再生 if (e.getClickCount() == 2 e.getButton() == MouseEvent.BUTTON1) { int idx = playList.rowAtPoint(e.getPoint()); if (idx = 0) { play(idx); } } super.mouseClicked(e); } }); } // スライダの変更通知を受け取るリスナーです private ChangeListener getPosChangeListener() { return new ChangeListener() { // スライダを操作すると通知が来ます @Override public void stateChanged(ChangeEvent e) { // マウスで操作中は何もません if (!posSlider.getValueIsAdjusting()) { // マウスで操作中でなければスライダの位置に合わせてシークします try { if (player.getStatus() == BasicPlayer.STOPPED) { // 停止中の場合、再生開始してからシークします play(); } // シーク位置計算 long l = getAudioBytes() * posSlider.getValue() / 100; player.seek(l); } catch (BasicPlayerException e1) { e1.printStackTrace(); } } } }; } // スライダの変更通知を受け取るリスナーです private ChangeListener getVolChangeListener() { return new ChangeListener() { // スライダを操作すると通知が来ます @Override public void stateChanged(ChangeEvent e) { // マウスで操作中は何もません if (!volSlider.getValueIsAdjusting()) { // マウスで操作中でなければスライダの位置に合わせてシークします setGain(); } } }; } // スライダに合わせてボリュームを設定します private void setGain() { try { player.setGain((double) volSlider.getValue() / volSlider.getMaximum()); } catch (BasicPlayerException e1) { e1.printStackTrace(); } } // BasicPlayerリスナーを追加します BasicPlayerListener bpl; private void addBasicPlayerListener() { bpl = new BasicPlayerListener() { // プレイヤーのステータス変更通知 @Override public void stateUpdated(BasicPlayerEvent event) { if (event.getCode() == BasicPlayerEvent.EOM) { try { stopAction(); } catch (BasicPlayerException e) { e.printStackTrace(); } } // プレイヤーのステータスが停止になった場合 if (player.getStatus() == BasicPlayer.STOPPED) { } } @Override public void setController(BasicController controller) { } // 再生中の進捗通知 @Override public void progress(int bytesread, long microseconds, byte[] pcmdata, Map properties) { // 再生が進んだらスライダを操作します。 if (getAudioBytes() 0) { // 新しいスライダの位置を計算します int newValue = (int) (bytesread * 100 / getAudioBytes()); // スライダをマウスで摘んでる間は操作しません // スライダの値と、現在の値が同じ場合も操作しません if (!posSlider.getValueIsAdjusting() posSlider.getValue() != newValue) { // setValueでの操作でも、ChangeListenerに通知が行くのでリスナー取り出し、操作、リスナー追加の順に処理します posSlider.removeChangeListener(posSliderCl); posSlider.setValue(newValue); posSlider.addChangeListener(posSliderCl); } } } // ファイルオープン通知 @Override public void opened(Object stream, Map properties) { // プロパティをクラス変数に保存します audioInfo = properties; } }; player.addBasicPlayerListener(bpl); } // 曲の最後まできた時のアクション private void stopAction() throws BasicPlayerException { if (plCombo.getSelectedIndex() == 0) { // 1曲のみ if (roopCheck.isSelected()) { // ループならまた再生 // stop(); play(); } else { // ループでなければ停止 stop(); } } else if (plCombo.getSelectedIndex() == 1) { // プレイリスト順 if (roopCheck.isSelected()) { // ループなら次のファイルへ next(); } else { if (playIndex + 1 = files.size()) { // ループじゃない&最後まで来てたら停止 stop(); } else { // 最後じゃなければ次のファイルへ next(); } } } else { // SHUFFLE if (roopCheck.isSelected()) { // ループなら次のファイルへ next(); } else { if (playIndex + 1 = files.size()) { // ループじゃない&最後まで来てたら停止 stop(); } else { // 最後じゃなければ次のファイルへ next(); } } } } // プロパティから音楽ファイルの長さを返します private long getAudioBytes() { try { return Long.parseLong(audioInfo.get("audio.length.bytes").toString()); } catch (Exception e) { return 0; } } // 水平線 public JSeparator getHr(int width, int hight) { JSeparator sp = new JSeparator(JSeparator.HORIZONTAL); sp.setPreferredSize(new Dimension(width, hight)); return sp; } // 再生ボタンのアクションクラス class bPlayAction implements ActionListener { @Override public void actionPerformed(ActionEvent e) { try { int status = player.getStatus(); if (status == BasicPlayer.PAUSED) { // 一時停止の場合、一時停止を解除します resume(); } else if (status == BasicPlayer.STOPPED) { // 停止中の場合、再生開始します play(); } else if (status == BasicPlayer.PLAYING) { // 再生中の場合、一時停止します pause(); } } catch (Exception ex) { // 握りつぶす } } } // 停止ボタンのアクションクラス class bStopAction implements ActionListener { @Override public void actionPerformed(ActionEvent e) { try { stop(); } catch (Exception ex) { // 握りつぶす } } } // 次ボタンのアクションクラス class bNextAction implements ActionListener { @Override public void actionPerformed(ActionEvent e) { try { next(); } catch (Exception ex) { // 握りつぶす } } } private void next() { System.out.println("next"); play(playIndex + 1); } private void prev() { System.out.println("prev"); play(playIndex - 1); } // 前ボタンのアクションクラス class bPrevAction implements ActionListener { @Override public void actionPerformed(ActionEvent e) { try { prev(); } catch (Exception ex) { // 握りつぶす } } } // 一時停止 private void pause() throws BasicPlayerException { // playMode = PLAY_MODE_PAUSE; player.pause(); bPlay.setText(PLAY); } // 一時停止解除 private void resume() throws BasicPlayerException { player.resume(); bPlay.setText(PAUSE); } // 再生 private void play() throws BasicPlayerException { if (player.getStatus() != BasicPlayer.STOPPED) { player.stop(); } player.play(); bPlay.setText(PAUSE); } // インデックス指定で再生 private void play(int idx) { try { if (files.size() == 0) { return; } if (files.size() = idx) { playIndex = 0; } else if (0 idx) { playIndex = files.size() - 1; } else { playIndex = idx; } if (plCombo.getSelectedIndex() == 2) { // シャッフル open(files.get(shIndexs.get(playIndex))); } else { // 通常 open(files.get(playIndex)); } } catch (BasicPlayerException e) { e.printStackTrace(); } if (plCombo.getSelectedIndex() == 2) { // シャッフル playList.setRowSelectionInterval(shIndexs.get(playIndex), shIndexs.get(playIndex)); } else { // 通常 playList.setRowSelectionInterval(playIndex, playIndex); } } // 停止 private void stop() throws BasicPlayerException { if (player.getStatus() != BasicPlayer.STOPPED) { player.stop(); } bPlay.setText(PLAY); } // 開く private void open(File file) throws BasicPlayerException { if (player.getStatus() == BasicPlayer.PLAYING) { // 一旦停止してから次のファイルを再生&リスナーがいると次のファイルを再生しようとするので一旦取り出し。 player.removeBasicPlayerListener(bpl); player.stop(); for (int i = 0; i 100; i++) { if (player.getStatus() == BasicPlayer.STOPPED) { break; } i++; try { Thread.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } } player.addBasicPlayerListener(bpl); } // ラベル設定 label.setText(FILE_NAME + file.getName()); // 取得したファイルを開く player.open(file); play(); // 再生 } private void setPlayList() { int rowCount = m.getRowCount(); for (int i = rowCount; i files.size(); i++) { File f = files.get(i); m.addRow(readTag(f)); } } // mp3ファイルからID3タグを読んで表示します private String[] readTag(File file) { MP3File mp3file; String[] ret = new String[2]; try { mp3file = new MP3File(file); String title = file.getName(); String artist = "--"; // v2タグを優先的に表示 if (mp3file.hasID3v2Tag()) { AbstractID3v2 v2 = mp3file.getID3v2Tag(); title = v2.getSongTitle(); artist = v2.getLeadArtist(); } else if (mp3file.hasID3v2Tag()) { // v2タグがない場合v1タグを表示 ID3v1 v1 = mp3file.getID3v1Tag(); byte[] ary = v1.getTitle().getBytes("ISO-8859-1"); title = new String(ary); ary = v1.getArtist().getBytes("ISO-8859-1"); artist = new String(ary); } // 読み込んだタグを画面に設定 if (title == null || title.trim().length() == 0) { title = file.getName(); } ret[0] = title; ret[1] = artist; } catch (IOException e) { e.printStackTrace(); } catch (TagException e) { e.printStackTrace(); } return ret; } List File files = new ArrayList File (); // ドロップターゲットリスナー // ドロップされたファイルを受け取り、最初のファイルだけを再生します class MyDropTargetListener extends DropTargetAdapter { @Override public void drop(DropTargetDropEvent dtde) { dtde.acceptDrop(DnDConstants.ACTION_COPY); boolean b = false; try { if (dtde.getTransferable().isDataFlavorSupported(DataFlavor.javaFileListFlavor)) { b = true; List File list = (List File ) dtde.getTransferable().getTransferData( DataFlavor.javaFileListFlavor); int idx = files.size(); // 最初のファイルだけ取得 for (File file list) { if (file.getName().toLowerCase().endsWith("mp3")) { files.add(file); } } setPlayList(); play(idx); } } catch (Exception e) { e.printStackTrace(); } finally { dtde.dropComplete(b); } } } } // スライダー描画クラス class TriSliderUI extends MetalSliderUI { Color trackBackGroundColor = Color.LIGHT_GRAY; Color trackColor = Color.WHITE; Color trackBorderColor = Color.BLACK; Color thumbColor = Color.LIGHT_GRAY; public TriSliderUI() { super(); } public TriSliderUI(Color trackBackGroundColor, Color trackColor, Color trackBorderColor, Color thumbColor) { super(); this.trackBackGroundColor = trackBackGroundColor; this.trackColor = trackColor; this.trackBorderColor = trackBorderColor; this.thumbColor = thumbColor; } public Color getTrackBackGroundColor() { return trackBackGroundColor; } public void setTrackBackGroundColor(Color trackBackGroundColor) { this.trackBackGroundColor = trackBackGroundColor; } public Color getTrackColor() { return trackColor; } public void setTrackColor(Color trackColor) { this.trackColor = trackColor; } public Color getTrackBorderColor() { return trackBorderColor; } public void setTrackBorderColor(Color trackBorderColor) { this.trackBorderColor = trackBorderColor; } public Color getThumbColor() { return thumbColor; } public void setThumbColor(Color thumbColor) { this.thumbColor = thumbColor; } // マーカー描画スレッド @Override public void paintThumb(Graphics g) { if (slider.getOrientation() == JSlider.HORIZONTAL) { Graphics2D g2 = (Graphics2D) g; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.setPaint(thumbColor); int x = thumbRect.x + thumbRect.width / 2 - 2; int y = thumbRect.y; int w = 5; int h = thumbRect.height; g2.fill3DRect(x, y, w, h, true); } else { super.paintThumb(g); } } // トラック描画スレッド @Override public void paintTrack(Graphics g) { int cx, cy, cw, ch; int pad; int pady = 3; Rectangle trackBounds = trackRect; if (slider.getOrientation() == JSlider.HORIZONTAL) { Graphics2D g2 = (Graphics2D) g; // いろいろ座標設定 pad = trackBuffer; cx = pad; cy = trackBounds.height / 2 - pady; cw = trackBounds.width; // アンチエイリアス設定 g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.translate(trackBounds.x, trackBounds.y + cy + pady); // トラックの背景描画(ライトグレー g2.setPaint(trackBackGroundColor); Polygon polygon1 = new Polygon(); polygon1.addPoint(0, cy); polygon1.addPoint(cw, cy); polygon1.addPoint(cw, -cy); g2.fillPolygon(polygon1); // トラックの支点から現在地までの描画(白 g2.setPaint(trackColor); Polygon polygon2 = new Polygon(); polygon2.addPoint(0, cy); polygon2.addPoint(thumbRect.x, cy); polygon2.addPoint(thumbRect.x, cy - (int) (cy * 2 / (double) cw * thumbRect.x)); g2.fillPolygon(polygon2); polygon2.reset(); // 黒い枠線描画 g2.setPaint(trackBorderColor); g2.drawPolygon(polygon1); g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); g2.translate(-trackBounds.x, -(trackBounds.y + cy + pady)); } else { super.paintTrack(g); } } } コメント バグ報告です、1回のみリピートの時一旦停止しないと再生し直せないみたいです。要はplay();の一行前にstop();を入れればいいだけの話なんですが。 - Daxy 2013-02-12 01 30 03 バグ報告ありがとうございますっ今週は忙しいので来週調べてみます>< - ちゃぱてぃ 2013-02-14 02 26 47 えいやえいやと修正してみました。ついでにボリュームのスライダーを別のサンプルで作ったのに差し替え。BasicPlayerSample3になりました。 - ちゃぱてぃ 2013-02-22 02 15 13 名前
https://w.atwiki.jp/javamock/pages/15.html
HelloWorld.java 下記のHelloWorld.javaについて簡単にですが解説します HelloWorld.java class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); } } クラス クラスは以下のように記述します 修飾子 class クラス名 extends スーパークラス implements インターフェース, インターフェース, インターフェース ...{ フィールド,コンストラクタ,メソッド,内部クラスなど } 修飾子 以下の修飾子を指定します ※記述しなければデフォルトの修飾子になります 修飾子 修飾子種別 public アクセス修飾子 protected アクセス修飾子 private アクセス修飾子 static スタティック修飾子 final ファイナル修飾子 abstract 抽象修飾子 strictfp 厳密浮動小数修飾子 extends スーパークラス 継承するクラスを指定します ※記述しなければ「extends java.lang.Object」になります implements インターフェース, インターフェース, インターフェース ... インターフェースを指定します ※インターフェースが必要なければ記述しません メソッド メソッドは以下のように記述します 修飾子 戻り値 メソッド(引数,引数,引数,...) throws 例外クラス,例外クラス,例外クラス... { 処理など } 上記のHelloWorld.javaでは以下の箇所です public static void main(String[] args) { System.out.println("Hello World"); } ※javaコマンドで実行されるクラスは以下シグネチャを持つmainメソッドが定義されている必要があります ※実行後最初に呼び出されるメソッドです public static void main(String args[]) 修飾子 以下の修飾子を指定します ※記述しなければデフォルトの修飾子になります 修飾子 修飾子種別 public アクセス修飾子 protected アクセス修飾子 private アクセス修飾子 static スタティック修飾子 final ファイナル修飾子 abstract 抽象修飾子 native ネイティブ修飾子 synchronized 同期修飾子 strictfp 厳密浮動小数修飾子 戻り値 戻り値のデータ型を指定していします ※voidを指定すると何も返しません 引数 引数を指定します 上記のHelloWorld.javaでは以下の箇所です String型の配列を引数としています String[] args throws 例外クラス,例外クラス,例外クラス... 例外クラスを指定します 指定した例外が発生したとき例外を投げます System.out.println("Hello World"); java.lang.Systemクラスのフィールドout(java.io.PrintStreamクラス)の メソッドprintln()に引数として"Hello World"を渡すことでHello Worldと出力します
https://w.atwiki.jp/codeportal/pages/13.html
Graphics Java2D Swing(GUI LookAndFeel) OpenGL(JOGL) Applet HTMLページ内でSwingを動かす Wicket JSPやServletを書かずにHTML+AJAXのWebサーバーを作る JBoss 分散アプリケーションサーバー XML DOM SAX Stax JAXB SOAP WSDL Hibernate JPA(O/Rマッピング) Framework Reflection Annotation Plugin JMX JNDI RMI Manifest end
https://w.atwiki.jp/api_programming/pages/36.html
下位ページ Collection File(ファイル) HTTP通信 JSONIC JSONObject JSP Servlet Swing 文字列 日時 構文・処理 Content Listリストを生成Generics リストにデータを追加 リストのi番目のデータを取得 Mapインターフェース要素の格納 要素の取り出し 要素数を取得 全てのキーを取得 含まれている全てのキーと値のセットを表示 getter,setterについて JREとJDK Cookie ログ使い方 変数のクラス名を調べる List http //d.hatena.ne.jp/nattou_curry_2/20090726/1248600833#list Listインターフェース リストを生成 List データ型 リストの名前 = new ArrayList データ型 (); Generics データ型 に基本データ型は指定できない。例えば int。この場合は Integer を使う。 ArrayListクラス - JavaDrive リストにデータを追加 List.add(E); リストのi番目のデータを取得 List.get(int i); List.get(i) Mapインターフェース Mapインターフェース HashMap キーと値を、セットで登録する。HashMap - JavaDrive java.util.HashMap TreeMap キーと値を、セットで登録する。キーの順序で自動ソートがかかる。java.util.TreeMap 要素の格納 HashMap.put(K,V) 要素の取り出し HashMap.get(K) 要素数を取得 HashMap.size() 全てのキーを取得 HashMap.KeySet() 含まれている全てのキーと値のセットを表示 for(String key hashmap.KeySet()){ hashmap.get(key); // キーを使って、値を取り出す } http //www.javadrive.jp/start/hashmap/index1.html https //docs.oracle.com/javase/jp/6/api/java/util/Map.html getter,setterについて member変数名が member の場合 getMember(E) setMember() 変数名が違っても(たとえば、メンバ変数が_private←予約語なのでそのまま使えない)、 getPrivate(E) setPrivate() としておけば、メンバ変数名がprivateかのように扱える。 JREとJDK バージョンを変えたら急にエラーを吐き出したりする。 JRE Java で作られたプログラムを実行するとき必要 JDK Java でプログラムを作るとき必要 JSPを使う場合には JREではなくてJDKが必要みたい。 Cookie Cookie ログ java.util.logging.Logger を用いる(昔は無かったので、log4j等、別の方法だった。) 使い方 final Logger logger = Logger.getLogger("SampleLogging") ロガーに名前をつける。クラス名を与えることが多い。 logger.info("隣の客は良く柿食う客だ。"); Logger.getLogger(str) Google/GAEの管理コンソールで、INFOレベルのログを見るには、WEB-INF内のlogging.propertiesを設定を変える Google App Engineでサーブレットのログを出力/確認する - Try Lifelog http //www.atmarkit.co.jp/ait/articles/0801/08/news128.html 変数のクラス名を調べる String(val.getClass().getName()); getClass() は Object で定義され、Class が返る。 この Class に .getName() で取得。ただし、クラスがわかる訳で型だとわからない。 http //www.itmedia.co.jp/enterprise/articles/0407/26/news035.html
https://w.atwiki.jp/chapati4it/pages/83.html
フローレイアウトで強制改行するサンプルです。 やってる事は、JSeparatorを縦幅0、横幅ウィンドウと同じサイズで追加するだけですが! サンプルダウンロード FlowNewLine.java FlowNewLine.jar FlowNewLine.zip サンプルソース import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.TextField; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSeparator; /* * フローレイアウトで強制改行するサンプルです。 * ・やってることは、JSeparatorを縦幅0、横幅ウィンドウと同じサイズで追加するだけです。 */ public class FlowNewLine extends JFrame { public static void main(String[] args) { new FlowNewLine(); } public FlowNewLine() { setDefaultCloseOperation(EXIT_ON_CLOSE); int width = 300; setBounds(200, 100, width, 220); setTitle("フローレイアウトで強制改行"); // フローレイアウト設定 FlowLayout l = new FlowLayout(FlowLayout.LEFT); l.setVgap(3); l.setHgap(5); setLayout(l); setResizable(false); // サイズ変更禁止 add(getHr(width, 0)); add(getLabel("住所")); add(new TextField(20)); add(getHr(width, 0)); add(getLabel("氏名")); add(new TextField(20)); add(getHr(width, 0)); add(getLabel("年齢")); add(new TextField(3)); add(getHr(width, 0)); add(getLabel("電話番号")); add(new TextField(10)); add(getHr(width, 0)); add(getLabel("趣味")); add(new TextField(20)); add(getHr(width, 0)); add(getHr(width - 18, 1)); // ボタンをセンタリング表示のためにパネルを追加 JPanel p = new JPanel(); p.setLayout(new FlowLayout()); p.setPreferredSize(new Dimension(width - 18, 50)); p.add(new JButton("OK")); add(p); setVisible(true); } public JLabel getLabel(String text) { JLabel label = new JLabel(text); label.setPreferredSize(new Dimension(65, 20)); label.setHorizontalAlignment(JLabel.RIGHT); return label; } public JSeparator getHr(int width, int hight) { JSeparator sp = new JSeparator(JSeparator.HORIZONTAL); sp.setPreferredSize(new Dimension(width, hight)); return sp; } }
https://w.atwiki.jp/limixp/pages/12.html
Javaの基本的な事について整理しておきます. プログラミング言語Java Sun Microsystems社が開発したプログラミング言語およびその開発環境. オブジェクト指向言語. Write Once, Run Anywhere. 「一度記述すれば,どこででも実行が可能.」 Javaはオブジェクト指向の言語であり,その利点はクラス設計(継承, インタフェース)による再利用性(部品化)です.またJavaはJava仮想マシン(Java VM)と呼ばれるコンピュータを仮想化したソフトウェア上で実行されます.Windows, Linux, Macといったプラットフォームの違いや,またそのVersion(例:Windows 2000, Xp, Vista等)の違いがあってもこのJava仮想マシンさえインストールされているコンピュータ上であればJavaプログラムを実行することができます. Javaが登場したのはもう10年以上前(1995年頃)になりますが,その技術は未だ飛躍し続けており,Javaプログラマーの需要は衰えることがありません. トップページ
https://w.atwiki.jp/chapati4it/pages/21.html
Javaのswingで画像を拡大縮小して表示するサンプルです。 ポイント ImageIconクラスでアイコンとして画像を読み込みます。 getScaledInstanceで大きさを変更します。 幅と高さともに同じ倍率にする場合、高さは-1にしてもいいです。 MediaTrackerで処理の終了を待ちます。 画像の加工は、加工完了する前に処理が戻ってくるので、waitForAll()などで処理の終了を待機する必要がある…らしいです。 JLabelにアイコンを設定します。 大きさを変更するのも意外と簡単です。 実行結果 ソース ImageTest2.java import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Image; import java.awt.MediaTracker; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JSeparator; // swing 画像表示サンプル2 画像を拡大縮小してみよう // ポイント1.ImageIconクラスでアイコンとして画像を読み込みます。 // ポイント2.getScaledInstanceで大きさを変更します。 // 幅と高さともに同じ倍率にする場合、高さは-1にしてもいいです。 // // ポイント3.MediaTrackerで処理の終了を待ちます。 // 画像の加工は、加工完了する前に処理が戻ってくるので、waitForAll()などで処理の終了を待機する必要がある…らしいです。 // ポイント4.JLabelにアイコンを設定します。 // 大きさを変更するのも意外と簡単です。 public class ImageTest2 extends JFrame { public static void main(String[] args) { new ImageTest2(); } public ImageTest2() { setTitle("swing 画像表示サンプル2 画像を拡大縮小してみよう"); // 今回はレイアウトマネージャを使います setLayout(new FlowLayout()); // ポイント1.ImageIconクラスでアイコンとして画像を読み込みます。 ImageIcon icon = new ImageIcon("logo3w.png"); MediaTracker tracker = new MediaTracker(this); // ポイント2.getScaledInstanceで大きさを変更します。 Image smallImg = icon.getImage().getScaledInstance((int) (icon.getIconWidth() * 0.5), -1, Image.SCALE_SMOOTH); Image bigImg = icon.getImage().getScaledInstance((int) (icon.getIconWidth() * 1.5), -1, Image.SCALE_SMOOTH); // ポイント3.MediaTrackerで処理の終了を待ちます。 tracker.addImage(smallImg, 1); tracker.addImage(bigImg, 2); ImageIcon smallIcon = new ImageIcon(smallImg); ImageIcon bigIcon = new ImageIcon(bigImg); try { tracker.waitForAll(); } catch (InterruptedException e) { System.out.println("なんかエラーでた。"); } // ポイント4.JLabelにアイコンを設定します。 JLabel l = new JLabel("0.5", smallIcon, JLabel.LEFT); JLabel ll = new JLabel("1.0", icon, JLabel.LEFT); JLabel lll = new JLabel("1.5", bigIcon, JLabel.LEFT); // 関係ないポイント // 横幅の大きなJseparatorを差し込むと、JFlowLayoutの強制改行みたいな事ができます JSeparator sp = new JSeparator(); JSeparator sp2 = new JSeparator(); sp.setPreferredSize(new Dimension(5000, 0)); sp2.setPreferredSize(new Dimension(5000, 0)); add(l); add(sp); add(ll); add(sp2); add(lll); setDefaultCloseOperation(EXIT_ON_CLOSE); setBounds(100, 100, 500, 350); setVisible(true); } } コメント(バグ、間違い、こんな情報が欲しい等ありましたら) ImageIconで取得した画像のレイアウトはBoxLayoutではうまくいかないのですか? 初心者ですみません… - 名無し 2013-07-01 16 23 48 名前 アンケート(このページの情報はお役に立ちましたか?) 順位 選択肢 得票数 得票率 投票 1 役に立った 65 (62%) 2 分かりにくい 25 (24%) 3 役に立たない 15 (14%) 4 間違っている 0 (0%) その他 投票総数 105
https://w.atwiki.jp/java_pro/pages/70.html
Javaプログラムを実行する際の引数について復習しましょう。 コマンドプロンプトでプログラムのソースコード が置かれているフォルダに移動して。 javac Hogehoge.java と「javac」というコマンドの後にファイル名を指定してあげると コンパイルができます。 コンパイルをすると「Hogehoge.class」のように クラスファイルが同じフォルダに生成されます。 ここで java Hogehoge と「java」というコマンドの後にクラス名を指定してあげると プログラムが実行されます。 コマンドラインの引数(実行時の引数) プログラムを実行する際に、メソッドのように引数を渡すことが できます。 プログラムはmainメソッドから実行されますよね。 public static void main(String[] args) というふうにmainメソッドを宣言すると思いますが、ここの 「args」というString配列にコマンドラインの引数(実行時の引数)が 渡されます。 たとえば、 java Hogehoge moge fuga java のようにプログラムを実行したとすると "moge fuga java"の部分がコマンドラインの引数として渡されます。 これはプログラムで String args[] = {"moge", "fuga", "java"}; と宣言されたような形になります。 なので、この実行時にはargs[0]には"moge"という文字列が入っています。 ※プログラムを実行する際に任意に引数を渡すことができるということなので、 コマンドラインの引数を渡していなければargs[0]などは存在しない。 ※コマンドラインの引数として渡すことが出来るのは文字列のみ ○3級の人向けの課題。 コマンドライン実行時に受け取った引数を番号を付けて順番に 表示するプログラム「ArgsTest01.java」を作りましょう。 例) java ArgsTest01 hogehoge mogemoge fugafuga あなたが入力したのは 1 hogehoge 2 mogemoge 3 fugafuga java ArgsTest01 あなたが入力したのは ※JCPadでコマンドラインの引数を指定して実行する場合理は、 コマンド(C)の右のエリアに直接コマンドを入力しましょう。
https://w.atwiki.jp/java_pro/pages/21.html
import java.io.*; public class Break { public static void main(String[] args){ BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try { while (true){//無限ループ String line = reader.readLine();//標準入力から一行取得 if (line == null){//nullなら繰返しを抜ける break; } System.out.println(line);//画面に取得した文字列を表示 } System.out.println("終了します。"); } catch (IOException e){ System.out.println(e); } } }